package com.egoo.ticket.server.dao;

import com.egoo.ticket.server.pojo.entity.EwsRole;
import com.egoo.ticket.server.pojo.entity.EwsUser;
import com.egoo.ticket.server.pojo.entity.EwsUserRole;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * @author Administrator
 */
@Component
public interface EwsUserRoleDao {
	/**
	 * /根据用户查询角色id
	 * @param userId
	 * @param tenantId
	 * @return
	 */
	List<EwsUserRole> selectByUserId(@Param("userId") String userId,
									 @Param("tenantId") String tenantId);

	/**
	 * /根据角色查询用户id
	 * @param roleId
	 * @return
	 */
	List<EwsUserRole> selectByRoleId(String roleId);

	/**
	 * /查询不是该角色的用户id
	 * @param roleId
	 * @return
	 */
	List<EwsUserRole> selectByNotRoleId(String roleId);

	/**
	 * /查询包含以下角色的用户id
	 * @param roleId
	 * @return
	 */
	List<EwsUserRole> selectByInRoles(List<String> roleId);

	/**
	 * /查询不包含以下角色的用户id
	 * @param roleId
	 * @return
	 */
	List<EwsUserRole> selectByNotInRoles(List<String> roleId);

	/**
	 * /根据角色id集合查询用户信息
	 * @param roleId
	 * @return
	 */
	List<EwsUser> getUserByRoleId(List<String> roleId);

	/**
	 * 根据用户id和角色id查询
	 * @param ewsUserRole
	 * @return
	 */
	EwsUserRole selectByUserIdAndRoleId(EwsUserRole ewsUserRole);

	/**
	 * 批量插入
	 * @param ewsUserRoles
	 * @return
	 */
	Long insertBatch(@Param("ewsUserRoles") List<EwsUserRole> ewsUserRoles);

	/**删除所有用户角色
	 *
	 * @return
	 * @param tenantId
	 */
	Long deleteAllUserRole(@Param("tenantId") String tenantId);

	/**
	 * 查询角色列表通过用户id
	 * @param userId
	 * @return
	 */
	List<EwsRole> selectRoleByUserId(@Param("userId") String userId);

	Integer deleteByMap(Map<String, Object> map);
}
